package service.impl;

import controller.entity.Page;
import dao.GoodsDAO;
import dao.GoodsInStoreDAO;
import dao.StoreDAO;
import entity.Goods;
import entity.GoodsInStore;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import service.GoodsStoreService;
import service.entity.GoodsStoreDTO;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by asus on 2017/6/22.
 */
@Service("goodsStoreService")
public class GoodsStoreServiceImpl implements GoodsStoreService{
    @Autowired
    private GoodsInStoreDAO goodsInStoreDAO;
    @Autowired
    private StoreDAO storeDAO;
    @Autowired
    private GoodsDAO goodsDAO;

    @Override
    public List<GoodsStoreDTO> getAllGoodsInStore() {
        return null;
    }

    @Override
    public List<GoodsStoreDTO> getPageGoodsInStore(Page page) {
        GoodsStoreDTO goodsStoreDTO=null;
        List<GoodsStoreDTO> goodsStoreDTOS = new ArrayList<>();
        List<GoodsInStore> goodsInStores;
        System.out.println(page);
        goodsInStores =  goodsInStoreDAO.getPage(page.getPage(), page.getRows());
        for(GoodsInStore obj:goodsInStores){
            goodsStoreDTO=new GoodsStoreDTO();
            goodsStoreDTO.setId(obj.getId());
            goodsStoreDTO.setStoreId(obj.getStoreId());
            goodsStoreDTO.setGoodsId(obj.getGoodsId());
            goodsStoreDTO.setQuantity(obj.getInQuantity());
            goodsStoreDTO.setDate(obj.getInDate());
            goodsStoreDTO.setGoodsName(goodsDAO.findById(obj.getGoodsId()).getName());
            goodsStoreDTO.setStoreName(storeDAO.findById(obj.getStoreId()).getName());
            goodsStoreDTOS.add(goodsStoreDTO);
        }
        if (null == goodsInStores || goodsInStores.size() < 1) {
            System.out.println(" GoodsStoreServiceImpl--->getPage：入库商品为空");
        }
        return goodsStoreDTOS;
    }

    /**
     * 获取总记录数
     *
     * @return
     */
    @Override
    public Integer getCountGoodsInStore() {
        return goodsInStoreDAO.getCount();
    }

    @Override
    @Transactional
    public Long insertGoodsInStore(GoodsStoreDTO goodsStoreDTO) {
        Long id=0L;
        GoodsInStore goodsInStore=new GoodsInStore();
        GoodsInStore.convertDTOtoEntity(goodsInStore,goodsStoreDTO);
        System.out.println("DTO转化为实体后："+goodsInStore);
        try {
            id = goodsInStoreDAO.save(goodsInStore);
            Goods goods = goodsDAO.findById(goodsStoreDTO.getGoodsId());
            goods.setQuantity(goods.getQuantity() + goodsStoreDTO.getQuantity());
            goodsDAO.save(goods);
            return id;
        }catch (Exception e){
            e.printStackTrace();
            return id;
        }
    }


}
